#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = '汤小洋'

'''
字符串常用方法
用法：字符串变量.方法名(参数)
'''
string = 'helLo Worldhe'
print(string.upper())
print(string.lower())
print(string.capitalize())  # 首字母大写
print(string.index('e'))  # 索引就是顺序编号，从0开始，也称为下标
print(string.startswith('x'))
print(string.endswith('ld'))
print(string.count('l'))  # 统计子串出现的次数
print(string.replace('o', 'xx'))  # 替换所有匹配的内容
# print(string.center(50, '='))  # 将字符串居中，长度变为50，长度不足时使用=填充

# print(string.split())  # 分割，默认以空格分割，返回一个列表
words = string.split()
print(words[1]) # 获取列表中的某个元素
print(string.split('o'))  # 以o进行分割

print(string.strip())  # 清除，默认清除两边的空格
print(string.strip('he'))  # 清除两边的he

print(','.join(string))  # 将字符串string中的每个字符用逗号连接在一起，即在每个字符之间增加分隔符
print(len(string))  # 调用len()函数获取字符串的长度
print('------------------------------------')

'''
切片
用法：字符串变量[起始索引:结束索引:步长]
注：支持写负数-n，表示倒数第n个
'''
name = 'tom cruise'
print(name[0], name[5])
print(name[len(name) - 1], name[-2])  # 获取最后一个、获取倒数第2个

print(name[1:5])  # 获取索引为[1,5)的字符
print(name[:3])  # 表示从0开始
print(name[4:])  # 表示到末尾
print(name[4:-2])
print(name[0:7:2])  # 索引为[0，7)的字符，每两个取一个
print(name[::2])  # 所有字符，每两个取一个
print(name[::-1])  # 相当于逆序
print('------------------------------------')

'''
类型转换
'''
# 将字符串转换为数值
a = '25'
b = int(a)
print(a, type(a))
print(b, type(b))
A = '18.5'
B = float(A)
print(A, type(A))
print(B, type(B))

num = input('请输入一个整数：')  # 使用input()函数获取数据时总是以字符串类型返回
# NUM=int(num)
NUM = eval(num)  # 使用eval()函数去掉字符串两边的引号，然后进行表达式运算，如：输入3+8
print(num, type(num))
print(NUM, type(NUM))

print(int(num)+3)  # 如果想进行算术运算，+号两边必须都为数值类型


# 将数值转换为字符串
c = 8
C = str(c)
print(c, type(c))
print(C, type(C))

lucyNum = 9
print('我的幸运数字是：' + str(lucyNum))  # 数值类型不能直接和字符串拼接，需要进行转换


# +号的作用
print(3+5)  # 加法
print('帅'+'气')  # 拼接
print('我爱你'+str(520))


'''
字符串格式化
'''
# 方式1：使用%运算符，%s表示任意字符，%d表示整数，%f表示浮点数（不推荐）
name = 'tomaaa'
age = 25
height = 180.5
print('大家好，我叫' + name + '，年龄：' + str(age) + '，身高：' + str(height))
print('大家好，我叫%s，年龄：%d，身高：%.2f' % (name, age, height))  # .2f表示保留两位小数

# 方式2：使用format()方法，使用{}表示占位符
print('大家好，我叫{}，年龄：{}，身高：{}'.format(name, age, height))
print('大家好，我叫{0}，年龄：{1}，身高：{2}'.format(name, age, height))
# 格式控制，使用格式控制标记来控制显示时的格式
print('大家好，我叫{:.3}，年龄：{}，身高：{:.2f}'.format(name, age, height))  # :表示引导符号，.3表示输出字符串的前3位，.2f表示保留两位小数

# 方式3：在字符串前面添加一个f，使用{变量名}来嵌入变量（Python3.6新增，推荐！）
print(f'大家好，我叫{name}，年龄：{age}，身高：{height}')
